/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package robotlion.model;

import java.awt.Point;
import java.util.ArrayList;

/**
 *
 * @author test
 */
public class Manager {
    ArrayList<Robot> _listeRobot;
    Carte _carte;

    public Manager() {
        this._listeRobot = new ArrayList();
        _carte = new Carte();
    }
    
    public Carte getCarte() {
        return _carte;
    }

    public void setCarte(Carte _carte) {
        this._carte = _carte;
    }

    public ArrayList<Robot> getListeRobot() {
        return _listeRobot;
    }

    public void setListeRobot(ArrayList<Robot> _listeRobot) {
        this._listeRobot = _listeRobot;
    }
    
    public void addRobot(Robot lion) {
        this._listeRobot.add(lion);
    }
    
    public void delRobot(String p_nom) {
        for(Robot rob : _listeRobot)
        {
            if (rob.getNom().equals(p_nom))
            {
                rob.delObservateur();
                _listeRobot.remove(rob);
                // stop function when robot was founded
                break;
            }
        }
        // for each observer notify()
    }
    public ArrayList<Point> getIncendies() {
        return getCarte().getIncendies();
    }
    
    public void donnerObjectif() {
        
        int bestTemp = 0;
        Robot bestrob = null;
        int poidsObjectifCourant = 0;
        ArrayList<Point> incendies = getIncendies();
        for(Point incendie : incendies)
        {
            bestTemp = 0;
            bestrob = null;
            for(Robot rob : _listeRobot)
            {
                if ( rob.getEtat()== EEtat.Libre)
                {
                    poidsObjectifCourant = rob.repondreObjectif(this._carte, incendie);
                    
                    if ( bestrob == null)
                    {
                        bestrob = rob;
                        bestTemp = poidsObjectifCourant;
                    }
                    else
                    {
                        if ( bestTemp > poidsObjectifCourant)
                        {
                            bestrob = rob;
                            bestTemp = poidsObjectifCourant;
                        }
                    }
                }
            }
            if ( bestrob != null)
            {
                bestrob.prendreObjectif(incendie);
            }
        }
    }
}
